#!/bin/bash

#script  to capture system statistics

t=`date | awk '{print $4}' |awk -F ':' '{print $1$2$3}'`
d=`date +%m/%d/%Y  |  awk -F '/' '{print $1$2}'`
memfile=/media/mmcblk0p1/rpc/$d"-"$t"Mem".txt
cpufile=/media/mmcblk0p1/rpc/$d"-"$t"Cpu".txt
max_min_avgfile=/media/mmcblk0p1/rpc/$d"-"$t"calculation".txt




#calculate the cpu max
cpu_calc()
{
cpu_max=`cat $cpufile| awk -F ' ' 'BEGIN {max = 0} {if ($6>max) max=$6 fi} END {print "CPU_Max=", max}'`
cpu_min=`cat $cpufile|awk -F ' ' 'BEGIN {min = 1000} {if ($6<min) min=$6 fi} END {print "CPU_Min=", min}'`
cpu_avg=`cat $cpufile| awk -F ' '  '{sum+=$6} END {print "CPU_Average = ", sum/NR}'`
echo   $cpu_max" "$cpu_min" "$cpu_avg"%"
}


#calculate the mem max
mem_calc()
{
mem_max=`cat $memfile| awk -F ' ' 'BEGIN {max = 0} {if ($6>max) max=$6 fi} END {print "MEM_Max=", max}'`
mem_min=`cat $memfile|awk -F ' ' 'BEGIN {min = 999000} {if ($6<min) min=$6 fi} END {print "MEM_Min=", min}'`
mem_avg=`cat $memfile| awk -F ' '  '{sum+=$6} END {print "MEM_Average = ", sum/NR}'`
echo   $mem_max" "$mem_min" "$mem_avg"%"
}

# watch memory usage 
watch_mem()
{

dd1=`date "+%Y-%m-%d %H:%M:%S" `
memtotal=`cat /proc/meminfo |grep "MemTotal"|awk '{print $2}'` 
memfree=`cat /proc/meminfo |grep "MemFree"|awk '{print $2}'` 
cached=`cat /proc/meminfo |grep "^Cached"|awk '{print $2}'` 
buffers=`cat /proc/meminfo |grep "Buffers"|awk '{print $2}'` 


# mem_usage=$((100-memfree*100/memtotal-buffers*100/memtotal-cached*100/memtotal)) 
mem_message=$dd1",$memtotal,$memfree,$cached,$buffers" 
echo $mem_message >>$memfile


# trap "echo '**********The results are as follows***********';echo `cpu_calc`|tee >>$max_min_avgfile;echo `mem_calc`|tee >>$max_min_avgfile;cat $max_min_avgfile;echo '*****************`date`*************';exit" 2
sleep 10
}


# watch cpu 
get_cpu_info() 
{ 
  cat /proc/stat|grep '^cpu[0-9]'|awk '{used+=$2+$3+$4;unused+=$5+$6+$7+$8} END{print used,unused}' 
}


watch_cpu() 
{
time_point_1=`get_cpu_info` 
sleep 5
time_point_2=`get_cpu_info`
dd2=`date "+%Y-%m-%d %H:%M:%S" `
cpu_usage=`echo $time_point_1 $time_point_2|awk '{used=$3-$1;total=$3+$4-$1-$2;print used*100/total}'` 
cpu_message=$dd2",$cpu_usage" 
echo $cpu_message >>$cpufile
} 




while :
do
#trap "echo `cpu_max`;exit" 2
# watch_cpu
watch_mem
#trap "echo `cpu_max`;exit" 2
done


# free -m |grep "Mem" >>./temp/mem.txt

# top -n 2| grep "Cpu" >>./temp/cpu.txt